/**
 * 
 */
package Utils;


import java.util.HashMap;
import java.util.Map;


/**
 * @author Logan
 * @param <T>
 * @param <U>
 *
 */
public class EtudeStatistique {

	private Map<Character, Compteur> alphabet;
	private Map<String, Compteur> alphabetDouble;
	private String s;

	public EtudeStatistique(String s) {
		alphabet = new HashMap<Character, Compteur>();
		alphabetDouble = new HashMap<String, Compteur>();
		this.s=s;
		analyse();
	}


	public void analyse() {
		Character c, c1, c2;
		String tmp="";

		if(s != null && s.length()>1) {
			c=s.charAt(0);
			c1=s.charAt(0);
			for(int i=1; i<s.length(); i++) {
				c=s.charAt(i);
				ajouterChar(c);

				c1 = s.charAt(i-1);
				c2 = s.charAt(i);
				tmp="";
				tmp=tmp.concat(c1.toString());	
				tmp=tmp.concat(c2.toString());
				ajouterString(tmp);
			}
		}
		
	}

	public void ajouterChar(Character c) {
		if(c != null) {
			if(alphabet.containsKey(c)) {
				alphabet.get(c).incrementer();
			}
			else {
				Compteur cp = new Compteur();
				cp.setI(1);
				alphabet.put(c, cp);
			}
		}
	}

	public void ajouterString(String s) {
		if(s != null) {
			if(alphabetDouble.containsKey(s)){
				alphabetDouble.get(s).incrementer();
			}
			else {
				Compteur cp = new Compteur();
				cp.setI(1);
				alphabetDouble.put(s,cp);
			}
		}
	}
	
	/**
	 * Getter pour alphabet.
	 *
	 * @return the alphabet
	 */
	public Map<Character, Compteur> getAlphabet() {
		return alphabet;
	}

	/**
	 * Setter pour alphabet.
	 *
	 * @param alphabet the alphabet to set
	 */
	public void setAlphabet(Map<Character, Compteur> alphabet) {
		this.alphabet = alphabet;
	}

	/**
	 * Getter pour message.
	 *
	 * @return the message
	 */
	public String getMessage() {
		return s;
	}

	/**
	 * Setter pour message.
	 *
	 * @param message the message to set
	 */
	public void setMessage(String s) {
		this.s = s;
	}

	/**
	 * Getter pour alphabetDouble.
	 *
	 * @return the alphabetDouble
	 */
	public Map<String, Compteur> getAlphabetDouble() {
		return alphabetDouble;
	}

	/**
	 * Setter pour alphabetDouble.
	 *
	 * @param alphabetDouble the alphabetDouble to set
	 */
	public void setAlphabetDouble(Map<String, Compteur> alphabetDouble) {
		this.alphabetDouble = alphabetDouble;
	}

}
